<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="box">
        <h1></h1>
        <p></p>
    </div>
    <script>
        /* 
               属性监听-数据拦截--响应式
        */
        var obj = { name: 'zhangsan', age: 18 }


        // 数据 显示到 页面中---数据渲染到页面中
        var h1 = document.querySelector("#box h1");
        var p = document.querySelector("#box p");
        h1.innerHTML = obj.name
        p.innerHTML = obj.age;

        // 修改了数据，重渲染页面，页面才会改变
        obj.name = 'lisi';

        h1.innerHTML = obj.name
        p.innerHTML = obj.age;


        /*
            vue-react --小程序--- 把dom操作给我封装（获取dom-修改属性-渲染）

            框架内 一旦发现 修改了对象，自动更新dom

            框架内部能监听到 对象属性的改变--属性监听--数据拦截--数据劫持--
        
        */
    </script>

    <!-- 引入vue-以后 提供了全局变量 Vue -->
    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>


    <!-- 页面结构 -- 变量 直接写到 页面中--但是 使用 {{变量}}-->
    <div id="app">
        {{ message }}
        <h1>{{obj.name}}</h1>
        <p>{{obj.age}}</p>


        <!--   v-model="title"  输入框值 自动存入 title变量中-->
        <input type="text" name="" id="" v-model="title">
        <button @click="fn()">发布</button>

        <ul>
            <!-- v-for 遍历数组 --得到多个 li，item是元素，index 元素的下标 -->
            <li v-for="(item, index) in arr">
                {{item.title}}
            </li>
        </ul>


    </div>

    <script>
        // 解构赋值--获取Vue对象里面的 createApp属性
        // const { createApp } = Vue
        let app = Vue.createApp({

            // data选项
            data() {
                return {
                    // 规定变量要定义在 data return 的对象 里面
                    message: 'Hello Vue!',
                    obj: { name: 'zhansan', age: 18 },

                    title: '',

                    arr: [
                        { title: 'zhangsan' },
                        { title: 'lisi' },
                    ]
                }
            },
            // 定义的函数都放这里
            methods: {
                fn() {
                    this.aaaa = 1;
                    console.log('fn');

                    let obj = { title: this.title }

                    // 函数中使用变量，需要加个this
                    // this.arr.push({ title: 'aaabbb' })
                    this.arr.push(obj)

                    //清空输入框
                    this.title = ''
                }
            },
        }).mount('#app')

        console.log(app);
    </script>



</body>

</html>